//这个是任务文件
#pragma once
#include<iostream>
#include<functional>
#include<vector>
#include<ctime>

typedef void (*task_t)();    //定义一个 函数指针   

//给出几个任务（打印日志）
void PrintLog()
{
    std::cout<<"我是一个打印日志的任务！"<<std::endl;
    std::cout<<std::endl;
}

//下载任务
void DownLoad()
{
    std::cout<<"我是一个下载的任务！"<<std::endl;
    std::cout<<std::endl;
}

//上传任务
void UpLoad()
{
    std::cout<<"我是一个上传的任务！"<<std::endl;
    std::cout<<std::endl;
}

class TaskManager
{
public:
    TaskManager()
    {
        //任务是  给一个生成随机数
        srand(time(nullptr));
    }

//注册    提供一些注册方法
    void Register(task_t t)
    {
        _tasks.emplace_back(t);
    }
    
//给出对应的任务码
    int Code()
    {
        return rand()%_tasks.size();
    }

//有了任务码就可以执行某任务
    void Execute(int code)
    {
        //判断任务合法性(任务码要正常   并且少于进程的个数)
        if(code >=0 && code < _tasks.size())
        {
            _tasks[code]();
        }
    }

    ~TaskManager()
    {}
private:
    std::vector<task_t> _tasks;

};